package com.cino.interceptor;


import com.cino.util.UserSession;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@Component
public class LoginInterceptor implements HandlerInterceptor {


    /**
     *
     * @param request
     * @param response
     * @param handler
     * @return true代表放行 false代表拦截
     * @throws Exception
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        /*
            需要先从从前端请求投中获取token
            前端ajax请求写法 $.()ajax({
                headers:{
                "access-token":localstorage.getItem("token")
                }
            })
            其他请求方式见前端 blog项目
         */
        //设置响应 Mime类型
        response.setContentType("text/json;charset=utf-8");

        //获取会话中的 token 前提是ajax请求
        String token = request.getHeader("access-token");//这里是json对象写法

        //非ajax 的普通请求获取请求路径中的token方法
        String parameter = request.getParameter("access-token");
        //非ajax 的普通请求获取前端请求路径中的type
        String type = request.getParameter("type");//这里的type是请求方式

        Object loginUser = UserSession.getUserSession(token);
        if(loginUser==null||token==null){
            //输出json 格式的流到前端
            response.getWriter().write("{\"success\":false,\"code\":401}");

            return false;
        }
        return true;

    }
}
